#pragma once

#include  "iostream"
#include  "vector"
#include  "stack"
#include  "unordered_map"
#include   "queue"

using namespace std;

/**
 *题目描述
36进制由0-9，a-z，共36个字符表示。
要求按照加法规则计算出任意两个36进制正整数的和，如1b + 2x = 48  （解释：47+105=152）
要求：不允许使用先将36进制数字整体转为10进制，相加后再转回为36进制的做法
 *
 *
 *
 * TODO 需要注意的一点是+10
 * */


string addStrings(string num1, string num2) {

    string res;
    int a = num1.size() - 1;
    int b = num2.size() - 1;
    int left = 0;//进位
    while (a >= 0 || b >= 0 || left > 0) {

        int at = 0;
        int bt = 0;
        if (a >= 0) {
            ///如果属于0-9之间
            if (num1[a] >= '0' && num1[a] <= '9') {
                at = num1[a] - '0';
            } else {
                at = num1[a] - 'a' + 10;//否则就是字母了
            }

        }


        if (b >= 0) {
            if (num2[b] >= '0' && num2[b] <= '9') {
                bt = num2[b] - '0';
            } else {
                bt = num2[b] - 'a' + 10;//否则就是字母了 卧槽这边记得+10
            }
        }

        int sum = at + bt + left;
        // res.append(('0'+(sum%10)));
        res += '0' + (sum % 36);
        left = sum / 36;
        a--;
        b--;
    }

    reverse(res.begin(), res.end());
    return res;
}